// 普通用户登录
const UserModel = require('../model/user')
const BugModel = require('../model/bug')
// 数据加密
const {EnCode, OnCode } = require('./utils/jiamiAndJiemi')
const filterPas = {passWord: 0}
module.exports = (router) => {
    // 注册功能
    router.post('/userRegister', function (req, res) {
        let { userName, passWord, headImg, tag, motto, 
            QQ, weChat, github, gitee, csdn} = req.body
        UserModel.findOne({ userName }, function (err, users) {
            if (users) {
                res.send({ code: 1, msg: '当前用户已经存在' })
            } else {
                const user = new UserModel({ userName,passWord, userPic: headImg,
                Tag: tag.split(' ').slice(0, 3), motto, 
                connection:{QQ, weChat, github, gitee, csdn}, star: []})
                user.save(function (err, category) {
                    if (category) {
                        res.send({ code: 0,msg:'注册成功' })
                    } else {
                        res.send({ code: 1, msg: '注册失败，未知错误' })
                    }
                })
            }
        })
    }),
    // 登录功能
    router.post('/userLogin', function(req, res){
        let { userName, passWord } = req.body
        UserModel.findOne({userName, passWord}, function(err, user){
            if(user && user.isRight){
                // 登录成功之后返回除了密码之外的所有用户信息，此外将用户名和密码用空格分割进行字符串拼接，在加上blog四个字符
                //然后使用签名的方式进行加密，这样整体就是 口令加盐再签名加密的方式，最后以cookie的形式返回，
                // 用于用户自动登录token验证
                let token = EnCode({userName: user.userName, passWord: user.passWord})
                res.cookie('user_token',token,{maxAge:1000*60*60}) 
                res.send({code: 0, msg: '登录成功', data: {...user._doc, passWord: 0}})
            }else if(user && !user.isRight){
                res.send({code: 1, msg: '你的账号因为违规被管理员封掉'})
            }else{
                res.send({code: 1, msg: '用户名或者密码错误'})
            }
        })
    })
    // 自动登录功能
    router.post('/userAutoLogin', function(req, res){
        let token = req.cookies.user_token
        if(!token){
            res.send({code: 1, msg: '请先登录'})
        }else{
            let [userName, passWord] = OnCode(token)
            // console.log('解密结果',userName,passWord)
            UserModel.findOne({userName, passWord}, function(err,user){
                if(user){
                    res.send({code: 0,msg: '自动登录成功',data:{...user._doc, passWord: 0}})
                }else{
                    res.send({code: 110,msg: '你伪造token攻击网站，现在逮捕你'})
                }
            })
        }
    })
    // bug反馈功能
    router.post('/bugReceive', function(req, res){
        //picUrl:{type:String,require:true}, // 图片地址
    //author:{type:String,require:true}, //反馈人
    //Desc: {type:String,require:true}, // bug描述
    //createTime :{type:Number,require:true}, //创建时间
    //isDeal: false, //bug是否解决
    // levelbug等级 1 2 3 逐渐严重 一般（不影响正常使用） 严重（影响系统使用） 非常严重（加急处理）
        let {picUrl, Desc, author, level, authorName} = req.body
        let createTime = new Date()
        let dealTime = 0
        let isDeal = false
        if(!author){
            res.send({code: 1,msg: '请先登录之后反馈'})
        }else{
            const bug = new BugModel({picUrl, Desc, author, createTime,dealTime, isDeal, level, authorName})
            bug.save(function(err, b){
                if(b){
                    res.send({code: 0,msg: 'bug反馈成功，已经通知管理员修复'})
                }else{
                    res.send({code: 1,msg: 'bug反馈功能崩了'})
                }
            })
        }
    })
    // 图片上传功能，在fileUpload.js文件中
    // /manage/img/upload /manage/img/delete 图片上传和删除的后台地址，上传文件名name:image
    // 删除所有用户 慎用
    router.get('/deleteAllUser',function(req, res){
        UserModel.deleteMany(function(err,list){
            res.send({err,list})
        })
    })
    // 统一增加字段
    router.get('/useraddIsAuthor', function(req, res){
        let isRight = true
        UserModel.updateMany({},{isRight},function(err,list){
            res.send({code: 0, data: list})
        })
    })
}

//注册